【问题标题】:How to call a function parallelly in a while loop if a condition is met within the loop?如果在循环中满足条件,如何在while循环中并行调用函数?
【发布时间】:2020-01-01 06:58:20
【问题描述】:

我正在创建一个套接字,服务器每天都会在其中创建一个新的日志文件。在午夜,需要备份前一天的日志。日志文件很大,压缩并上传到云端可能需要一些时间。我不希望服务器等到备份完成后再继续侦听新的传入请求。我在下面的代码中编写了 'if' 条件的伪代码,因为我不确定如何实现它。我猜我必须在这里使用 multiprocessing

while True:
    clientsocket, address = s.accept()
    enter_log("SUCCESS", "Established incoming connection from {}".format(address))

    if midnight:
        call_another_function_parallelly_for_backup_and_let_the_loop_continue_listening

【问题讨论】:

  • 我会生成一个线程来处理日志备份。或者,如果您可以转换代码,请使用 asyncio。它非常适合这些类型的应用程序

标签: python python-3.x sockets multiprocessing serversocket


【解决方案1】:
while True:
    clientsocket, address = s.accept()
    enter_log("SUCCESS", "Established incoming connection from {}".format(address))

    if midnight:
        t = threading.Thread(target=your_func, args=(your_arg,))
        t.start()
        t.join()

def your_func(your_arg):
    try:
       your logic
    except Exception as e:
       print(e)

这将创建新线程,直到循环并且如果为真...

【讨论】:

  • 谢谢它有效。我还认为多处理库也可以做到这一点。您认为哪一种工具最适合这项工作?
  • 欢迎您!工作方式相同,但您在线程中拥有更多特权..
  • 接受我的回答,这将有助于其他人..谢谢
  • 完成了,如果您觉得我的问题很有趣,您也可以为我的问题投票吗? :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-04
  • 1970-01-01
  • 2020-02-06
  • 1970-01-01
  • 1970-01-01
  • 2017-08-01
相关资源
最近更新 更多