Python 需要异步或多线程任务的帮助
我是并行编程新手,目前需要将应用程序作为后台进程运行,其中包含多个任务。当前仅执行do_something(),它会阻止do_something 2()的执行。请任何人解释一下如何实现这一点?我应该使用asyncio还是其他什么?多谢各位Python 需要异步或多线程任务的帮助,python,multithreading,multiprocessing,python-asyncio,Python,Multithreading,Multiprocessing,Python Asyncio,我是并行编程新手,目前需要将应用程序作为后台进程运行,其中包含多个任务。当前仅执行do_something(),它会阻止do_something 2()的执行。请任何人解释一下如何实现这一点?我应该使用asyncio还是其他什么?多谢各位 import sched import time import os import subprocess import asyncio event_schedule = sched.scheduler(time.time, time.sleep) def
import sched
import time
import os
import subprocess
import asyncio
event_schedule = sched.scheduler(time.time, time.sleep)
def do_something():
print("Hello, World!")
...do my own stuff
event_schedule.enter(5, 1, do_something)
def do_something2():
print("Hello, World2!")
...do my own stuff here
event_schedule.enter(5, 1, do_something2)
event_schedule.enter(5, 1, do_something)
event_schedule.run()
event_schedule.enter(5, 1, do_something2)
event_schedule.run()
但是,我认为,您需要按如下方式组织代码,以便每个进程都有自己的调度程序(为了测试目的,我还修改/重新排列了代码,以便每个进程在经过一定次数的迭代后最终终止):
您的代码是否在I/O上花费了大量时间?如果不是,则使用多处理。如果有,您是否有支持异步IO的代码和库?如果是,请使用asyncio。如果没有,请使用线程。没有时间进行i\o,将使用多处理,谢谢
import sched
import time
from multiprocessing import Process
def do_something1():
print("Hello, World1!")
def scheduler1():
event_schedule = sched.scheduler(time.time, time.sleep)
for _ in range(3):
event_schedule.enter(5, 1, do_something1)
event_schedule.run()
def do_something2():
print("Hello, World2!")
def scheduler2():
event_schedule = sched.scheduler(time.time, time.sleep)
for _ in range(6):
event_schedule.enter(5, 1, do_something2)
event_schedule.run()
if __name__ == '__main__':
p1 = Process(target=scheduler1)
p1.start()
p2 = Process(target=scheduler2)
p2.start()
p1.join()
p2.join()