Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 需要异步或多线程任务的帮助_Python_Multithreading_Multiprocessing_Python Asyncio - Fatal编程技术网

Python 需要异步或多线程任务的帮助

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

我是并行编程新手,目前需要将应用程序作为后台进程运行,其中包含多个任务。当前仅执行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 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()