omz:forum

    • Register
    • Login
    • Search
    • Recent
    • Popular

    Welcome!

    This is the community forum for my apps Pythonista and Editorial.

    For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.


    how to understand thread clearly?

    Pythonista
    2
    3
    1456
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • ryubai
      ryubai last edited by ccc

      how to understand thread clearly? see my comments
      I run these code and return such results.


      <NSThread: 0x2828f0780>{number = 7, name = (null)}
      <NSThread: 0x28285b100>{number = 1, name = main}
      <NSThread: 0x2828f0780>{number = 7, name = (null)}

      import threading
      from objc_util import  *
      import ui
      
      td=ObjCClass('NSThread')
      print(td.currentThread())
      #why isn't this in a mainthread? it shows in background thread.
      
      #it shows in background thread,it's okay
      @ui.in_background
      def test1():
      	print(td.currentThread())
      
      #it shows in main thread,it's okay
      @on_main_thread
      def main():
      	global td	
      	print(td.currentThread())
      	test1()
      
      if __name__=='__main__':
      	main()
      
      1 Reply Last reply Reply Quote 0
      • JonB
        JonB last edited by JonB

        https://forum.omz-software.com/topic/4528/help-me-understand-pythonista-s-threads

        Basically to iOS, the only things non the main thread are user interface code and callbacks. Everything else is in the background queue. By default, there are just these two threads, and in_background gets queued onto the background thread -- meaning your main code must exit before anything from in_background will run. That leads to strange scenarios -- you just never have code in the main script that blocks waiting for something from a in_background function, since the in_background code won't execute until the main script is done. Also, never have blocking dependencies between two in_background items. It is often better to create your own thread if you plan on having code wait in the background for other conditions to be true.

        Callbacks -- button presses, etc are called on the main thread.

        ryubai 1 Reply Last reply Reply Quote 2
        • ryubai
          ryubai @JonB last edited by

          @JonB

          thank you very much for detailed reply.
          i will have more tests and try to understand it indepth.
          maybe ask later when i meet new question,thank you again.

          1 Reply Last reply Reply Quote 0
          • First post
            Last post
          Powered by NodeBB Forums | Contributors