title: [ERROR]: Issue with threading.Thread() while executing multithreading script with Python3
body: <p>The below sample of code is a small script that I am trying to create. In this script, there are two functions. The <code>calculate_the_square(takes_the_given_array)</code> and the <code>calculate_the_cube(takes_the_given_array)</code>.</p>
  
  <p>I created two threads, threa_01 and thread_02, and I told them to execute the function that I want to. In the args variable, I send the array that I want to send in order to be calculated (args=array). In the target variable, I send the name of the function where the specific thread I want to run in it (<code>target=calculate_the_square</code> or <code>target=calculate_the_cube</code>). Then I start the execution of the threads and I also make them be joined.</p>
  
  <p>Unfortunately, when I execute it I face the following issue:</p>
  
  <p><strong>ISSUE</strong></p>
  
  <pre><code>Exception in thread Thread-1:
  Traceback (most recent call last):
    File "C:\Program Files (x86)\Python37-32\lib\threading.py", line 917, in _bootstrap_inner
      self.run()
    File "C:\Program Files (x86)\Python37-32\lib\threading.py", line 865, in run
      self._target(*self._args, **self._kwargs)
  TypeError: calculate_the_square() takes 1 positional argument but 6 were given
  
  Exception in thread Thread-2:
  Traceback (most recent call last):
    File "C:\Program Files (x86)\Python37-32\lib\threading.py", line 917, in _bootstrap_inner
      self.run()
    File "C:\Program Files (x86)\Python37-32\lib\threading.py", line 865, in run
      self._target(*self._args, **self._kwargs)
  TypeError: calculate_the_cube() takes 1 positional argument but 6 were given
  
  
  Process finished with exit code 0
  </code></pre>
  
  <p><strong>WANTED OUTPUT (it has to be mixed but I wrote the generic result and not the multithreaded)</strong></p>
  
  <pre><code>Cube result:  5832
  Cube result:  778688
  Cube result:  2000376
  Cube result: 281011375 
  Cube result:  967361669
  Cube result:  1006012008
  Square result:  324 
  Square result:  8464
  Square result:  15876
  Square result:  429025
  Square result:  978121
  Square result:  1004004
  The program finished in : ...... SOME TIME
  </code></pre>
  
  <p><strong>CODE SAMPLE</strong> </p>
  
  <pre><code>import time
  import threading
  
  def calculate_the_square(variables):
  
      for var in variables:
          time.sleep(0.5)     # Insert a sleep just to count the time that needs to be completed
          print("Square result: ", var*var)
  
  def calculate_the_cube(variables):
      time.sleep(0.5)     # Insert a sleep just to count the time that needs to be completed
      for var in variables:
          print("Cube result: ", var*var*var)
  
  
  keeping_time = time.time()              # Keeping the starting time
  array = [18, 92, 126, 655, 989, 1002]  # Random given numbers.
  
  
  
  thread_01 = threading.Thread(target=calculate_the_square, args=(array))     # Creating threadh No1 and the target make this thread to focus on this function, sending the value that is saved in tha variable args.
  thread_02 = threading.Thread(target=calculate_the_cube, args=(array))       # Creating threadh No2 and the target make this thread to focus on this function, sending the value that is saved in tha variable args.
  
  
  thread_01.start()   # Starting the thread 1
  thread_02.start()   # Starting the thread 2
  
  thread_01.join() # Waits until the first thread is finished. Better switching between the threads. Maybe not now (only 2 threads) but if we had 10 and more it would be helpful.
  thread_02.join()
  
  print("The program finished in :", time.time()-keeping_time)
  </code></pre>
  
  <p>Can you please help me with this issue? What am I doing wrong?</p>
  
  <p>Thank you for your time in advance!</p>