How to not wait for function to finish python

后端 未结 5 809
青春惊慌失措
青春惊慌失措 2021-02-19 11:42

I\'m trying to program a loop with a asynchronous part in it. I dont want to wait for this asynchronous part every iteration though. Is there a way to not wait for this function

相关标签:
5条回答
  • 2021-02-19 12:02

    To expand on blue_note, let's say you have a function with arguments:

    def test(b):
        global a
        time.sleep(1)
        a += 1 + b
    

    You need to pass in your args like this:

    from threading import Thread
    b = 1
    Thread(target=test, args=(b, )).start()
    print("this will be printed immediately")
    

    Note args must be a tuple.

    0 讨论(0)
  • 2021-02-19 12:12

    You can put it in a thread. Instead of test()

    from threading import Thread
    Thread(target=test).start()
    print("this will be printed immediately")
    
    0 讨论(0)
  • 2021-02-19 12:14

    use thread. it creates a new thread in that the asynchronous function runs

    https://www.tutorialspoint.com/python/python_multithreading.htm

    0 讨论(0)
  • 2021-02-19 12:19

    You should look at a library meant for asynchronous requests, such as gevent

    Examples here: http://sdiehl.github.io/gevent-tutorial/#synchronous-asynchronous-execution

    import gevent
    
    def foo():
        print('Running in foo')
        gevent.sleep(0)
        print('Explicit context switch to foo again')
    
    def bar():
        print('Explicit context to bar')
        gevent.sleep(0)
        print('Implicit context switch back to bar')
    
    gevent.joinall([
        gevent.spawn(foo),
        gevent.spawn(bar),
    ])
    
    0 讨论(0)
  • 2021-02-19 12:26

    A simple way is to run test() in another thread

    import threading
    
    th = threading.Thread(target=test)
    th.start()
    
    0 讨论(0)
提交回复
热议问题