I’m new in parallel programming currently needs to run app as a background process which contains several tasks inside. Currently executing only do_something(), it blocks execution of do_something2(). Could please anyone explain me how to implement that? Should I use asyncio or something else? Thank you.
JavaScript
x
26
26
1
import sched
2
import time
3
import os
4
import subprocess
5
import asyncio
6
7
event_schedule = sched.scheduler(time.time, time.sleep)
8
9
10
def do_something():
11
print("Hello, World!")
12
do my own stuff
13
event_schedule.enter(5, 1, do_something)
14
15
16
def do_something2():
17
print("Hello, World2!")
18
do my own stuff here
19
event_schedule.enter(5, 1, do_something2)
20
21
22
event_schedule.enter(5, 1, do_something)
23
event_schedule.run()
24
event_schedule.enter(5, 1, do_something2)
25
event_schedule.run()
26
Advertisement
Answer
I think, however, you need to organize your code as follows so that each process has its own scheduler (I have also modified/rearranged the code so that each process ultimately terminates after some number of iterations for my testing purposes):
JavaScript
1
32
32
1
import sched
2
import time
3
from multiprocessing import Process
4
5
6
def do_something1():
7
print("Hello, World1!")
8
9
def scheduler1():
10
event_schedule = sched.scheduler(time.time, time.sleep)
11
for _ in range(3):
12
event_schedule.enter(5, 1, do_something1)
13
event_schedule.run()
14
15
def do_something2():
16
print("Hello, World2!")
17
18
def scheduler2():
19
event_schedule = sched.scheduler(time.time, time.sleep)
20
for _ in range(6):
21
event_schedule.enter(5, 1, do_something2)
22
event_schedule.run()
23
24
25
if __name__ == '__main__':
26
p1 = Process(target=scheduler1)
27
p1.start()
28
p2 = Process(target=scheduler2)
29
p2.start()
30
p1.join()
31
p2.join()
32