Hi,

I've also been working on running multiple instances of SUMO at the same time. 
However, I'm using Traci4J (the Java version of TraCI), and with it, it is 
completely straightforward. Unlike TraCI for Python, in the Java version the 
TraCI connection (SumoTraciConnection) is a class and so you can have as many 
instances as you want, and there is no need to do any "switch" from one to 
another.

I guess that the TraciAdapter Matej has developed is basically offering the 
same functionality as the SumoTraciConnection in Java, so it'd be great to have 
it fully developed for the Python bindings.

Regards,

Didac

---------------------------------------------

Didac Busquets, PhD
Senior Technologist

Transport Systems Catapult
3rd floor, The Pinnacle
170 Midsummer Boulevard
Milton Keynes
MK9 1BP

Tel: +44 (0) 1902 359 999 Ext: 1126
Email: [email protected]
Web: ts.catapult.org.uk


-----Original Message-----
From: Jakob Erdmann [mailto:[email protected]]
Sent: 06 January 2016 07:15
To: [email protected]
Cc: sumo-user <[email protected]>
Subject: Re: [sumo-user] is parallelism is possible in SUMO?

So far we didn't use traci in a multi-threaded application. Rather we had a 
single thread of control due to the rather tight coupling of the different 
simulations.
I understand the problem for your queue/worker example and I think your 
approach to solving it is straightforward.
With a global default TraciAdapter it would even be possible to maintain full 
backward compatibility for people that use a single instance (which I consider 
quite important).
Would you be able to help with converting the remaining traci modules?

regards,
Jakob

PS: Note, that multi-threading in the default python implementation is still 
not efficient when spending lots of time in python code due to the
GIL: https://wiki.python.org/moin/GlobalInterpreterLock




2016-01-06 5:15 GMT+01:00 Matěj Kubička <
[email protected]>:

> Thanks for the information, I didn't know about this.
>
> The method you describe on the wiki is single resource access
> multiplexing. Why not having traci instance specific to each connection?
>
> Consider this setup: I have N worker threads to which I assign jobs
> dynamically from a single queue. The traci.switch() is useless within
> the workers as Python can preempt anytime.
>
> I can call traci.switch() before every call to anything traci-related
> and pack it within some global lock in order to ensure proper synchronization.
> Like this I get 4 statements for every single call to traci. This is
> inelegant, to say the least..
>
> How do you usually use it? Maybe there is better way for me to
> implement it.
>
> Thanks,
> Matej.
>
>
> On 5.1.2016 08:16, Jakob Erdmann wrote:
>
> Hello,
> As I wrote before it is already possible to run multiple simulations
> from the same script. I updated the documentation to make this more
> obvious in the future:
>
> http://sumo.dlr.de/wiki/TraCI/Interfacing_TraCI_from_Python#Controllin
> g_parallel_simulations_from_the_same_TraCI_script
> regards,
> Jakob
>
> 2016-01-05 2:16 GMT+01:00 Matěj Kubička <
> [email protected]>:
>
>> Hi Jakob (et al.),
>> I needed the same -  to run multiple sumo instances in parallel.
>> Unfortunately Python bindings for Traci do not support that since the
>> traci package is written as a state machine.
>>
>> I've worked on it a bit and adapted the traci to support multiple
>> coexistent connections. The changes are extensive, but trivial. I
>> have wrapped the IO-related stuff in a class TraciAdapter, whose
>> constructor is now derived from what originally was traci.init().
>> Then I wrapped functionality of vehicle and route modules in classes
>> Vehicle and Route and I instantiate them in TraciAdapter's constructor.
>>
>> Except that now you have to access traci objects through instances of
>> TraciAdapter, the interface remains the same otherwise.
>>
>> My experiments are limited to adding a vehicle and to collecting data
>> about it. I worked only on concerned parts of the package. I am
>> sending you the code as mere proof of concept, in case you are
>> interested in such a functionality.
>>
>> Matej.
>>
>> PS: I tried to send you full package, but our mailserver blacklists
>> zipped attachements, so I am sending you the three afffected files only.
>>
>> PS2: simplified example that controls 2 sumo instances, adds a
>> vehicle to each and dumps their speeds as they progress in time
>>
>> import traci
>>
>> tad=traci.TraciAdapter(port)
>> tad.route.add('probe_route', edges)
>> tad.vehicle.add('probe', 'probe_route')
>>
>> tad1=traci.TraciAdapter(port+1)
>> tad1.route.add('probe_route', edges)
>> tad1.vehicle.add('probe', 'probe_route')
>>
>> while(True):
>>      tad.simulationStep()
>>      tad1.simulationStep()
>>      print tad.vehicle.getSpeed('probe'),
>> tad1.vehicle.getSpeed('probe')
>>
>>
>>
>>
>>
>>
>> On 17.12.2015 15:54, Jakob Erdmann wrote:
>>
>>> Yes. You can run multiple instances of sumo at the same time. It is
>>> even possible to control multiple instances from the same TraCI
>>> script as longs as you are careful with the port numbers.
>>> regards,
>>> Jakob
>>>
>>> 2015-12-17 14:39 GMT+01:00 Phuong Nguyen <
>>> <[email protected]>[email protected]>:
>>>
>>> Hi,
>>>>
>>>> I'm trying to optimize a traffic scenario using optimization
>>>> algorithm and sumo. In the optimization process, I need to call
>>>> sumo to run the scenario simulation so many time. Can a number of
>>>> the simulations run parallel?
>>>>
>>>> Thanks so much.
>>>> --
>>>> Ms. Nguyen Thi Mai Phuong
>>>> Division of Science Management and International Relations,
>>>> Department of Network and Communications, Thai Nguyen University of
>>>> Information and Communication Technology, Thai Nguyen city, Thai
>>>> Nguyen province, Vietnam.
>>>> Email:[email protected]
>>>> Tel: 0985 18 38 48
>>>>
>>>>
>>>> -------------------------------------------------------------------
>>>> ----------- _______________________________________________
>>>> sumo-user mailing list
>>>> [email protected]
>>>> https://lists.sourceforge.net/lists/listinfo/sumo-user
>>>>
>>>>
>>> --------------------------------------------------------------------
>>> ---------- _______________________________________________
>>> sumo-user mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/sumo-user
>>>
>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> ---------
>>
>> _______________________________________________
>> sumo-user mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/sumo-user
>>
>>
>
>
------------------------------------------------------------------------------
_______________________________________________
sumo-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sumo-user
The Transport Systems Catapult is one of a network of elite technology and 
innovation centres established by Innovate UK as a long-term investment in the 
UK’s economic capability. Applying business-led research, Catapults help 
businesses transform great ideas into valuable products and services to compete 
in the global markets of tomorrow. Transport Systems Catapult is a company 
limited by guarantee, registered in England and Wales with company number 
08041919. Registered office: The Pinnacle, Midsummer Boulevard, Milton Keynes, 
Bucks, MK9 1BP. This email and any attachments are confidential and intended 
solely for the use of the recipient(s) to whom they are addressed. If you have 
received it in error, please destroy all copies and inform the sender.
------------------------------------------------------------------------------
_______________________________________________
sumo-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sumo-user

Reply via email to